<script setup>
import { ref } from 'vue'
import {ElMessage, ElMessageBox} from "element-plus";
import {loginService, registerService} from "@/api/user.js";
import {usetokenstore} from "@/stors/token.js";
import router from "@/router/index.js";
import {addservice} from "@/api/product.js";
import { Plus } from '@element-plus/icons-vue'
import {commonDownload} from "@/api/common.js";
import cloneDeep from 'lodash/cloneDeep';


let imageUrl = ref("");
const productData = ref({
  imageUrl:"",
  name:"",
  content:"",
  price:"",
  description:""
})


// 修改 addproduct 方法
const addproduct = async () => {
  console.log(productData.value);
  const originalProductData = cloneDeep(productData.value); // 进行深拷贝

  const confirm = await new Promise((resolve) => {
    productData.imageUrl = imageUrl.value;
    ElMessageBox.confirm('是否确认添加商品?', '提示', {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    }).then(() => {
      resolve(true); // 用户点击确定
    }).catch(() => {
      resolve(false); // 用户点击取消
    });
  });

  if (confirm) {
    let result = await addservice(productData.value);
    console.log(productData.imageUrl);
    ElMessage.success(result.msg ? result.msg : "添加成功");
    // 使用将token储存在pinia中
    router.push('/product');
  } else {
    ElMessage.info('已取消添加商品'); // 用户取消操作
    // 恢复原始数据状态
    productData.value = originalProductData;
    imageUrl.value = originalProductData.imageUrl;
  }
}

const handleAvatarSuccess = (response, uploadFile) => {
  imageUrl.value = `api/common/download?name=${response.data}`;

  const queryString = imageUrl.value;
  const paramArray = queryString.split('&').filter(param => param.includes('name='));

  if (paramArray.length > 0) {
    const value = paramArray[0].split('=')[1];
    productData.imageUrl = value; // 将获取到的图片地址赋值给 productData.imageUrl
  }
}
const beforeAvatarUpload = function(rawFile) {
  const allowedTypes = ['image/jpeg', 'image/png']; // 允许上传的文件类型

  if (!allowedTypes.includes(rawFile.type)) {
    ElMessage.error('Avatar picture must be JPG or PNG format!');
    return false;
  } else if (rawFile.size / 1024 / 1024 > 2) {
    ElMessage.error('Avatar picture size can not exceed 2MB!');
    return false;
  }
  return true;
};

</script>

<template>
  <body>
  <div id="wrap">
    <div id="top_content">
      <div id="header">
        <div id="topheader">
          <h1 id="title">
            <a href="#">商品管理</a>
          </h1>
        </div>
        <div id="navigation"></div>
      </div>
    </div>
    <div id="content">
      <p id="whereami"></p>
      <h1>添加商品</h1>
      <el-form :model="productData" label-width="auto" style="max-width: 600px">

        <el-form-item

            label="作品图片:"
            prop="productUrl"
            class="uploadImg"
        >
          <el-upload
              class="avatar-uploader"
              action="api/common/upload"
              :show-file-list="false"
              :on-success="handleAvatarSuccess"
              :before-upload="beforeAvatarUpload"
          >
            <img v-if="imageUrl" :src="imageUrl" class="avatar" />
            <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
          </el-upload>
        </el-form-item>
        <el-form-item label="商品名">
          <el-input v-model="productData.name" />
        </el-form-item>
        <el-form-item  label="价格">
          <el-input v-model="productData.price" />
        </el-form-item>
        <el-form-item label="库存">
          <el-input v-model="productData.content" />
        </el-form-item>
        <el-form-item label="商品描述">
          <el-input v-model="productData.description" type="textarea" />
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="addproduct">添加</el-button>
          <el-button native-type="reset" type="danger">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
    <div>
      <div id="footer">
        <div id="footer_bg">
          www.commodityms.com.cn
        </div>
      </div>
    </div>

  </div>

  </body>
</template>

<style scoped>
body
{
  margin: 0;
  font-size: 62.5%;
  font-family: Verdana, Arial, Helvetica, sans-serif;
  padding: 15px 0;
  background: #eeeeee;
}

#wrap {
  width: 920px;
  margin: 0 auto;
  background: url(../assets/img/bg.gif) top repeat-y #FFFFFF;
}

#top_content {
  padding: 0 10px;
}

#topheader {
  padding: 25px 15px 15px 15px;
  margin: 0 auto 0 auto;
  background: url(../assets/img/top_left.gif) top left repeat-x #85C329;
}

#rightheader {
  float: right;
  width: 375px;
  height: 40px;
  color: #FFFFFF;
  text-align: right;
}
#rightheader p {
  padding: 35px 15px 0 0;
  margin: 0;
  text-align: right;
}
#rightheader p span {
  font-weight: bold;
}
#rightheader a:link, #rightheader a:visited {
  color: #FFFFFF;
  text-decoration: underline;
}

#title {
  padding: 0;
  margin: 0;
  font-size: 2.5em;
  color: #FFFFFF;
}
#title span {
  font-size: 0.5em;
  font-style: italic;
}
#title a:link, #title a:visited {
  color: #FFFFFF;
  text-decoration: none;
}
#title a:hover {
  color: #E1F3C7;
}

#navigation {
  background: #74A8F5;
  border-top: 1px solid #ffffff;
  height: 25px;
  clear: both
}
#navigation ul {
  padding: 0;
  margin: 0;
  list-style: none;
  font-size: 1.1em;
  height: 25px;
}
#navigation ul li {
  display: inline;
}
#navigation ul li a {
  color: #FFFFFF;
  display: block;
  text-decoration: none;
  float: left;
  line-height: 25px;
  padding: 0 16px;
  border-right: 1px solid #ffffff;
}
#navigation ul li a:hover {
  background: #5494F3;
}

#content {
  padding: 0 15px;
  margin: 0 auto 0 auto;
  background: url(../assets/img/content_bg.gif) repeat-x left top #ffffff;
  color: #666666;
}

#content p#whereami {
  padding: 20px 0 15px 0;
  margin: 0;
}
#whereami a:link, #whereami a:visited {
  color: #73A822;
  text-decoration: underline;
}

#content h1, #content h2,
#content h3, #content h4 , #content h5 {
  color: #74A8F5;
}
#content h1 {
  font-family: "Trebuchet MS", Arial, Helvetica;
  padding: 0;
  margin: 0 0 15px 0;
  font-size: 2em;
}
#content h2 {
  font-family: "Trebuchet MS", Arial, Helvetica;
  padding: 0;
  margin: 0 0 15px 0;
  font-size: 1.5em;
}

#top_body, #content_body {
  padding: 0 25px;
}

#footer {
  background: url(../assets/img/footer.gif) no-repeat center bottom ;
  color: #FFFFFF;
  padding: 0 10px 13px 10px;
}
#footer p {
  padding: 0;
  margin: 0;
}
#footer p a:link, #footer p a:visited {
  color: #FFFFFF;
  font-style: italic;
  text-decoration: none;
}
#footer #footer_bg {
  background: url(../assets/img/footer_bg.gif) repeat-x left bottom #85C329;
  padding: 15px 15px 25px 15px;
  border-top: 1px solid #7BB425;
}

#footer #design {
  display: block;
  width: 150px;
  height: 30px;
  float: right;
  line-height: 20px;
  padding: 0 5px;
  text-align: right;
  color: #E1F3C7;
}
#footer #design a {
  color: #FFFFFF;
  text-decoration: underline;
}

.table {
  margin-bottom: 15px;
  width: 100%;
  border-collapse: collapse;
}
.table_header td {
  background: url(../assets/img/tableheader-bg.gif) no-repeat left top;
  padding: 5px 10px;
  color: rgb(70,122,167);
  border-top: 1px solid #CBD6DE;
  border-bottom: 1px solid #ADBECB;
  font-size: 1.1em;
  font-weight: bold;
}
.table_header td a:link, .table_header td a:visited {
  text-decoration: underline;
  color: rgb(70,122,167);
}
.table_header td a:hover {
  text-decoration: underline;
  color: #73A822;
}
.table_header td {
  border: 1px solid #CBD6DE;
}

.row1 td, .row2 td, .row_hover td, .paging_row td {
  padding: 5px 10px;
  color: #666666;
  border: 1px solid #CBD6DE;
}
.row1 td {
  background: #ffffff;
}
.row2 td {
  background: #eeeeee;
}
.row_hover td {
  background: #FBFACE;
  color: #000000;
}

.hidden {
  display: none;
}

.little {
  font-size: 10px;
}

.clear {
  clear: both;
}

.img_left {
  float: left;
  padding: 1px;
  border: 1px solid #cccccc;
  margin: 0 10px 10px 0;
  width: 110px;
  height:150px;
}

/* #content ul basic style for unordered lists
------------------------------------------------*/
#content ul {
  font-size: 1.1em;
  line-height: 1.8em;
  margin: 0 0 15px 0;
  padding: 0;
  list-style-type: none;
}

/* #content p paragraphs
-----------------------------*/
#content p {
  font-size: 1.2em;
  margin: 0;
  padding: 0 0 15px 0;
}

/* #content p a links in paragraphs
------------------------------------*/
#content p a:link, #content p a:visited,
.table a:link, .table a:visited,
.link a {
  color: #73A822;
  text-decoration: none;
}
#content p a:hover, .table a:hover, .link a:hover {
  text-decoration: underline;
}

/* #content ul.green (73A822)
--------------------------------*/
#content ul.green li {
  padding: 0 0 0 20px;
  margin: 0;
  background: url(../assets/img/bullet_green.gif) no-repeat 1px 3px;
  font-size: 1.1em;
}
#content ul.green li a:link, #content ul.green li a:visited {
  color: #73A822;
  text-decoration: none;
}
#content ul.green li a:hover {
  color: #73A822;
  text-decoration: underline;
}

/* #content ul.black (73A822)
--------------------------------*/
#content ul.black li {
  padding: 0 0 0 20px;
  margin: 0;
  background: url(../assets/img/bullet_grey.gif) no-repeat 1px 3px;
  font-size: 1.1em;
}
#content ul.black li a:link, #content ul.black li a:visited {
  color: #666666;
  text-decoration: none;
}
#content ul.black li a:hover {
  color: #999999;
  text-decoration: underline;
}

/* #content ol
--------------------------------*/
#content ol {
  padding: 0 0 0 25px;
  margin: 0 0 15px 0;
  line-height: 1.8em;
}

#content ol li {
  font-size: 1.1em;
}
#content ol li a:link, #content ol li a:visited {
  color: #73A822;
  text-decoration: none;
}
#content ol li a:hover {
  color: #73A822;
  text-decoration: underline;
}

/* #content p.paging
---------------------------------*/
#content p.paging {
  padding: 5px;
  border: 1px solid #CBD6DE;
  text-align: center;
  margin-bottom: 15px;
  background: #eeeeee;
}

/* .small_input smaller text in inputs/combos
-----------------------------------------------*/
.small_input {
  font-size: 10px;
}

/* .form_table style for table used in forms
---------------------------------------------*/
.form_table {
  margin-bottom: 15px;
  font-size: 1.1em;
}
.form_table p {
  margin: 0;
  padding: 0;
}
.form_table td {
  padding: 5px 10px;
}

/* .checkbox_nomargins clear all margins from a checkbox
---------------------------------------------------------*/
.checkbox_nomargins {
  /*margin:0;width:13px;height:13px;overflow:hidden;
  font-size: 10px;*/
  margin: 0;
  padding: 0;
}

/* .button some buttons style - inspired from wordpress
------------------------------*/
input.button {
  margin: 0;
  padding: 2px;
  border: 3px double #999999;
  border-left-color: #ccc;
  border-top-color: #ccc;
  background: url(../assets/img/button.gif) repeat-x left top;
  font-size: 11px;
  font-family: Verdana, Arial, Helvetica, sans-serif;
}

/* form style for forms
-------------------------*/
form {
  padding: 0;
  margin: 0;
}

/* input.inputgri - some style for inputs
--------------------------------------------*/
input.inputgri, select.inputgri, textarea.inputgri {
  background: #eeeeee;
  font-size: 14px;
  border: 1px solid #cccccc;
  padding: 3px;
}
input.inputgri:focus, select.inputgri:focus , textarea.inputgri:focus {
  background: #ffffff;
  border: 1px solid #686868;
}

/* .notice - messages to user
--------------------------------*/
.notice {
  background: #CAEA99;
  border: 1px solid #70A522;
  padding: 15px 15px 15px 15px;
  margin-bottom: 15px;
  font-size: 1.2em;
  color: #333333;
}
.notice_error {
  background: #FEDCDA;
  border: 1px solid  #CE090E;
  padding: 15px 15px 15px 15px;
  margin-bottom: 15px;
  font-size: 1.2em;
  color: #333333;
}
#notice a {
  color: #333333;
  text-decoration: underline;
}

/* Other links
----------------*/
.other_links {
  background: #eeeeee;
  border-top: 1px solid #cccccc;
  padding: 5px;
  margin: 0 0 15px 0;
}
#content .other_links h2 {
  color: #999999;
  padding: 0 0 0 3px;
  margin: 0;
}
#content .other_links ul {
  padding: 0;
  margin: 0;
}
#content .other_links ul li {
  padding: 0 0 0 20px;
  background: url(../assets/img/bullet_grey.gif) no-repeat left center;
}
#content .other_links a, #content .other_links a:visited {
  color: #999999;
  text-decoration: underline;
}
#content .other_links a:hover {
  color: #666666;
}

/* code */
code {
  font-size: 1.2em;
  color: #73A822;
}

.avatar-uploader .el-upload {
  border: 1px dashed var(--el-border-color);
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  transition: var(--el-transition-duration-fast);
}

.avatar-uploader .el-upload:hover {
  border-color: var(--el-color-primary);
}

.el-icon.avatar-uploader-icon {
  font-size: 28px;
  color: #315c9a;
  width: 178px;
  height: 178px;
  text-align: center;
}
.avatar-uploader .avatar {
  width: 178px;
  height: 178px;
  display: block;
}
</style>